import { DatabaseObjectTypeEnum } from '@/enums/databaseObjectTypeEnum';
import { EntityPropertyFlagEnum } from '@/enums/entityPropertyFlagEnum';

/** 输出DTO:实体信息 */
export interface EntityInfoOutputDto {
  /** 编号 */
  Id: string | bigint;
  /** 实体名称 */
  Name: string;
  /** 实体类型名称 */
  TypeName: string;
  /** 数据库架构 */
  DbSchema: string;
  /** 数据库对象名称 */
  DbObjName: string;
  /** 数据库对象类型 */
  DbObjType: DatabaseObjectTypeEnum;
  /** 是否启用数据审计 */
  AuditEnabled: boolean;
  /** 是否启用数据事件 */
  EventEnabled: boolean;

  /** 创建时间 */
  CreatedTime: Date;
  /** 更新时间 */
  UpdatedTime?: Date | null;
  /** 数据版本 */
  DataVersion: string | bigint;

  /** 是否可更新的数据权限状态 */
  Updatable: boolean;
  /** 是否可删除的数据权限状态 */
  Deletable: boolean;
}

/** 输入DTO：实体信息 */
export interface EntityInfoInputDto {
  /** 编号 */
  Id: string | bigint;
  /** 是否启用数据审计 */
  AuditEnabled: boolean;
  /** 是否启用数据事件 */
  EventEnabled: boolean;

  /** 数据版本 */
  DataVersion: string | bigint;
}

/** 实体信息节点 */
export interface EntityInfoNode {
  /** 编号 */
  Id: string | bigint;
  /** 实体名称 */
  Name: string;
  /** 实体类型名称 */
  TypeName: string;
  /** 数据库架构 */
  DbSchema: string;
  /** 数据库对象名称 */
  DbObjName: string;
  /** 数据库对象类型 */
  DbObjType: DatabaseObjectTypeEnum;
  /** 是否启用数据审计 */
  AuditEnabled: boolean;
  /** 是否启用数据事件 */
  EventEnabled: boolean;

  /** 创建时间 */
  CreatedTime: Date;
  /** 更新时间 */
  UpdatedTime?: Date | null;
  /** 数据版本 */
  DataVersion: string | bigint;
}

/** 实体属性信息 */
export interface EntityProperty {
  /**  属性名 */
  Name: string;
  /** 属性显示 */
  Display: string;
  /** 属性数据类型 */
  TypeName: string;
  /** 标记集合 */
  Flags: EntityPropertyFlagEnum[];
  /** 数据值范围集合（主要针对枚举类型） */
  ValueRange: any[];
}
